<?php
/**
 * Data为单例类,通过此获取Data/包内的相对应的csvdata实例。
 * Data/包为csvdata相关的存取APC,及获取对应属性。
 * 例： 
 * $data = Data::Instance();
 * $item = $data->item->getTemplate( 3 );
 * var_dump( $item );
 * var_dump( $item->Name ); // OK
 * var_dump( $item->EffectiveDose ); // OK
 * var_dump( $item->GetName() ); // OK
 * var_dump( $item->GetEffectiveDose() ); // OK
 *
 */
class Data
{
	// 属性名 => data/包内的类。 
	private $availableClass = array(
	    'item' => 'DataTplItem',
	    'avatarparam' => 'DataTplAvatarParam'
	    // 在此追加 
	);
	
	private static $_instance;
	
	// 构造函数声明为private,防止直接创建对象。   
	private function __construct()
	{
	}
	
	// 单例方法。 
	public static function Instance()
	{
		if( !isset( self::$_instance ) )
		{
			self::$_instance = new Data;
		}
		return self::$_instance;
	} 
	
	/**
	 * 设置默认属性。 
	 * 属性名为availableClass的key 
	 * @param $var 属性名 
	 */
	public function __get( $var ) 
	{
		$model = strtolower( $var );
		if ( array_key_exists( $model, $this->availableClass ) ) {
			
			$class = $this->availableClass[$model];
			return new $class;
		}
	}
}
?>